package tech.aistar.day09;

import java.io.UnsupportedEncodingException;

/**
 * 本类用来演示: String常用的方法
 *
 * @author: success
 * @date: 2021/3/18 10:24 上午
 */
public class StringMethodDemo {
    public static void main(String[] args) {
        String s = "abc";
        //索引范围在[0,字符串长度-1]
        System.out.println(s.charAt(1));// java.lang.StringIndexOutOfBoundsException

        //获取字符串长度
        System.out.println(s.length());//3

        String s1 = new String("abc");
        System.out.println(s.equals(s1));//true

        System.out.println("a".compareTo("b"));//-1   标记数字-1  1  0

        //将指定的字符串连接到该字符串的末尾 +=
        String newChar = s.concat("def");
        System.out.println(newChar);//abcdef

        //当且仅当此字符串包含指定的char值序列时才返回true。
        //booealn contains(CharSequence s);//可以传入这个接口的任何一个实现类对象
        System.out.println(newChar.contains("bc"));//true

        //测试此字符串是否以指定的后缀结尾。
        System.out.println("java开发.gif".endsWith(".gif"));//true

        //测试此字符串是否以指定的前缀开头。
        System.out.println("Python".startsWith("Py"));//true

        //忽略大小写的比较
        System.out.println("abc".equalsIgnoreCase("ABC"));//true

        //以后 - 编码
        //String  name = "管管a5";
        String  name = "管管管";
        try {
            //UTF-8,一个汉字占3个字节,字母/数字/符号仍然是占1个字节
            //gbk,一个汉字占2个字节,字母/数字/符号仍然是占1个字节
            byte[] buf = name.getBytes("utf-8");
            //byte[] buf = name.getBytes();
            System.out.println(buf.length);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //没有传入任何的字符编码,就会根据系统的编码
        byte[] buf = name.getBytes();
        //System.out.println(buf.length);//
        for (int i = 0; i < buf.length; i++) {
            buf[i] = (byte) (buf[i]^888^888);
        }

        //将byte[]数组继续转换成String类型
        String pwdName = new String(buf);
        System.out.println(pwdName);

        //int indexOf(int ch);//返回指定字符第一次出现的字符串内的索引。
        //int indexOf(String str);//返回指定子字符串第一次出现的字符串内的索引。

        //int lastIndexOf(String str);

        System.out.println("abcdebc".indexOf("bc"));//1

        //99 - 'c'
        System.out.println("abcdebc".indexOf(99));//2

        //判断字符串长度是为0
        String m = "";
        System.out.println(m.isEmpty());//false

        //字符串的替换
        String love = "I Love Girl";
        System.out.println(love.replace("Girl","Java"));//I Love Java

        //String[] split(String regex);
        //切割字符串
        String ips = "192.168.3.150";
        String[] arr = ips.split("\\.");
        for (String s2 : arr) {
            System.out.println(s2);
        }

        //字符串的截取
        String hello = "hello world";
        System.out.println(hello.substring(1));//ello world

        //截取的范围下标是[1,3)
        System.out.println(hello.substring(1,3));//el

        //char[] toCharArray();
        //将字符串转换成字符数组
        char[] arrs = "abc".toCharArray();
        for (char c : arrs) {
            System.out.println(c);
        }
        //尝试使用另外一种方式
        String n = "abc";
        for (int i = 0; i < n.length(); i++) {
            System.out.println(n.charAt(i));
        }

        //String trim();//去除字符串左右两边的空格
        System.out.println("    go ogle    ".trim().length());
        System.out.println("          ".trim().length());//0

        //将int类型转成字符串类型
        int t = 23456;
        //static String valueOf(int i);
        //System.out.println(String.valueOf(t)+10);
        String result = String.valueOf(t);
        System.out.println(result.length());
    }
}
